/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-02-20
 * Time: 23:00
 */
class Solution {
//     动态规划
//     分为两种情况
//     考虑开头, 不考虑结尾   数组范围 [0, n-1]
//     考虑结尾, 不考虑开头   数组范围 [1, n]
    public int rob(int[] nums) {
        int length=nums.length;
        if(length==1){
            return nums[0];
        }
        if(length==2){
            return Math.max(nums[0], nums[1]);
        }
        int pre=0;
        int mid=0;
        for(int i=0;i<length-1;i++){
            int cur=Math.max(pre+nums[i], mid);
            pre=mid;
            mid=cur;
        }
        int value1=mid;
        pre=0;
        mid=0;
        for(int i=1;i<length;i++){
            int cur=Math.max(pre+nums[i], mid);
            pre=mid;
            mid=cur;
        }
        int value2=mid;
        return Math.max(value1, value2);
    }
}